草庐IT

c++ - OpenCV C++ 多线程

全部标签

java - jmx mbean线程安全

如果我有一个类,它也是一个mbean,并且我在我的代码中仅在一个线程中使用该类的函数,并且还通过jmx调用一个函数,我应该同步该代码吗?谢谢 最佳答案 代码应该是线程安全的,是的。如果您选择使用synchronized使其成为线程安全的,那由您决定。通过JMX调用的MBean将由容器调用,使用它自己的线程,与您自己的代码的线程分开。 关于java-jmxmbean线程安全,我们在StackOverflow上找到一个类似的问题: https://stackove

java - Java多线程帮助

好吧,这是一个双重目的的问题。我希望从中获得的主要好处是对多线程的更多了解。关于多线程,我是一个完全的新手,这是我第一次尝试在多线程中执行任何操作。我希望带走的另一件事是一些家庭作业方面的帮助,我正在将其转变为一个更加复杂的弗兰肯项目,以进行娱乐和学习。在这个问题的第一部分中,我将详细说明我在作业中一直在研究的线程的思路和方法。如果我做不好的事情,需要修复,无论如何,请告诉我,以便我学习。同样,我对多线程几乎一无所知。首先,我目前正在上一门计算机科学类(class),更好的是,它有家庭作业,使用的是我已经学过的技术和数据结构,因此并不具有挑战性。为了不让我完全厌倦,我尝试着做一个简单的

java - 在工作线程中阻塞 Java Swing 用户的模式

正如大多数Java程序员所知,对SwingGUI的更新应该只在AWT事件调度线程上完成,建议长时间运行的进程在“工作”线程上执行,更新发送到事件调度线程使用SwingUtilities.invokeAndWait()或SwingUtilities.invokeLater()。当长时间运行的进程完成时,您如何阻止用户继续使用应用程序?您是否将控件灰显,然后让工作线程使用上面提到的SwingUtilities调用重新启用它们?是否有更好的替代模式? 最佳答案 我会考虑3种解决方案:禁用面板的组件:这通常是我所做的。不幸的是,Swing没

java - Java 中多线程的替代方案

有个问题困扰我好久。例如,我有一个多线程服务器,当它收到一个请求时,它将这个请求传递给一个处理程序,这个处理程序将处理这个请求。我们使服务器多线程化的原因之一是:如果不是多线程,服务器处理这个请求的时候,在意义时间内,另一个请求到来,那么这个请求将被丢弃,因为服务器现在不可用。所以我想知道是否有多线程服务器的替代方案,例如我们可以为非多线程服务器创建一个队列?完成一个请求后,何时可以从队列中获取另一个请求。 最佳答案 是的,你可以有一个event-basedserver.此功能由java.nio包提供,但您可以使用像netty这样的

java - 网络 Swing 游戏中的多线程 : using invokeLater vs locks

我正在编写一个简单的自上而下的太空游戏,并且正在扩展它以允许通过网络与多个玩家一起玩。我读了很多书,但这是我第一次这样做,我希望能得到一些关于选择合理设计的建议。我的GUI是使用Swing编写的。每秒30次,计时器触发,并根据内存中gameWorld对象中的数据重新绘制我的GUI(本质上是带有位置的船舶和射弹列表等)。游戏世界的物理更新也是使用这个计时器进行的。因此,对于单人游戏实现,一切都发生在EDT上,并且效果很好。现在,我有单独的线程处理来自其他玩家的传入数据包。我想根据这些数据包包含的内容更新我的gameWorld对象中的数据。我的问题是,我应该使用invokeLater来进行

java - 等待线程在 shutdownhook 中写入更改

我有一个shutdownhook,它在进程终止时执行。然而,程序对h2数据库所做的更改不是持久的。只有在提交后让关闭线程等待一段时间,我才能在再次启动时看到数据库中的更改。Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){//H2dbaddrow,commitandcloseThread.sleep(1000);//intry/catchSystem.out.println("Shutdowncomplete");}}只有sleep,我会在下次连接到数据库时看到更改。有谁知道如何在进程终止

java - AWS Java TransferManager 问题,JVM 无法获得更多 native 线程

几周来我一直在与TransferManager问题作斗争,我希望能得到一些反馈,我有一个等待任务发送给它的服务器应用程序。其中一些任务需要上传到S3。该任务包含我需要的所有上传信息,包括访问key。在我实际的上传代码中,每次我需要上传时,我都需要创建一个新的S3Client和TransferManager对象,因为我不知道我的访问key时间。在系统处理大约1200次上传后,我收到一条错误消息,指示JVM无法再获取更多native线程。我将分析器附加到应用程序并注意到TransferManager对象没有得到正确清理,有数千个“s3-transfer-manager-worker-1”线

java - AWT 事件调度线程中的 SwingUtilities.invokeLater

如果您正在修改GUI并且处于AWT事件调度线程中,例如ActionListener,您是否应该使用SwingUtilities.invokeLater(Runnable)? 最佳答案 您必须始终在事件调度线程(EDT)中进行GUI更新。然而,正如Jeffrey在评论中指出的那样,Swing对象上的ActionListener.actionPerformed方法已经从EDT调用。如果您只是想让JButton看起来启用/未启用或从JList添加/删除项目,并且您通过ActionListener在Swing组件上,那么您不必显式调用Swi

java - 在服务于 Socket 连接的两个线程之间共享公共(public)数据

我在SO上看到很多类似的问题,但几乎没有一个在图片中有Socket。所以请花点时间阅读问题。我有服务器应用程序(使用ServerSocket)监听请求,当客户端尝试连接时,会创建新线程来为客户端提供服务(并且服务器返回监听模式以接收新请求).现在,我需要根据其他客户端发送到服务器的内容来响应一个客户端。示例:ServerSocket监听传入连接。客户端A连接,创建新线程为A服务。客户端B连接,创建新线程为B服务。A向服务器发送消息“HellofromA”。将此消息作为对客户端B的响应发送。我是整个“线程间通信”的新手。显然,上面提到的情况听起来很简单,但我描述这个是为了获得提示,因为我

java - Java中的多线程最佳实践

我是Java编程的新手。我有一个用例,我必须并行执行2个数据库查询。我类(class)的结构是这样的:classA{publicObjectfunc_1(){//executesdbquery1}publicObjectfunc_2(){//executesdbquery1}}现在我在同一个类中添加了另一个函数func_3,它调用这2个函数,但也确保它们并行执行。为此,我正在使用可调用对象和future。以这种方式使用它是正确的方法吗?我将this变量存储在一个临时变量中,然后使用它从func_3调用func_1和func_2(我不确定这是正确的方法)。或者还有其他方法可以处理此类情况